package com.exposit.zbs.service;

import com.exposit.zbs.model.*;

import java.math.BigDecimal;
import java.util.List;


public interface IGrantApplicationService {

	public List<GrantApplication> getAllGrants();

	List<GrantApplication> getGrantsByArea(GrantArea area, Integer count);

	GrantApplication getGrantById(Long id);

	void saveGrant(GrantApplication grant);

	boolean updateGrant(GrantApplication newGrant);

	void removeGrant(Long id);

	GrantArea getGrantAreaById(Long id);

	GrantArea getGrantAreaByLink(String link);

	List<GrantArea> getAllAreas();

	void saveGrantArea(GrantArea area);

	void removeGrantAreaById(Long id);

	void saveLike(Like like);

	void removeLike(Like like);

	Long saveComment(Comment comment);

	void deleteComment(Comment comment);

	Long saveAreaMoneyTransfer(GrantAreaMoney grantAreaMoney);

	List<GrantApplication> getApplicationsForAdminReview();

	Long getCountOfRequstedGrantApplications();

	Comment getCommentById(Long id);

	BigDecimal getAvailMoneyForArea(Long grantAreaId);

	void saveMoneyTransferFromFund(MoneyTransferFromFund mtff);

	void saveChangeLogRecord(GrantChangelog clRecord);

	List<GrantChangelog> getUsersFeed(User currentUser);

	User getUserByGrant(GrantApplication grant);

	int getAllMoney(Long grantAreaId);

	List<DateValueGraphicEntry> getMoneyReporyGraphic();

	List<GrantApplication> getFinishedGrantApplications();
}
